'/
' errorutil.bmx - version 1.01
' Written 2010 by Anton Berlin.
' 
' =========================================================================
' 
' This program is free software; you can redistribute it and/or modify
' it under the terms of the GNU Lesser General Public License as published
' by the Free Software Foundation; either version 3 of the License.
' 
' This program is distributed in the hope that it will be useful,
' but WITHOUT ANY WARRANTY; without even the implied warranty of
' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
' GNU General Public License for more details.
' 
' You should have received a copy of the GNU Lesser General Public License
' along with this program; if not, write to the Free Software
' Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
'/

superstrict

import BRL.System
import BRL.Reflection

type errorutil

	'// -----------------------------------------------------------------------------------------------------------------
	'// Description:
	'// 		Display a notification containing an error message.
	'// 
	'// Parameters:
	'// 		(string) msg: The error message to display.
	'// -----------------------------------------------------------------------------------------------------------------
	function error(msg:string)
	
		notify(msg, true);
	
	end function
	
	'// -----------------------------------------------------------------------------------------------------------------
	'// Description:
	'// 		Display a notification containing a fatal error message, and call an exit function immediately.
	'// 
	'// Parameters:
	'// 		(string) msg: The error message to display.
	'// -----------------------------------------------------------------------------------------------------------------
	function fatalerror(msg:string, exitFunction:object(arg:object), arg:object)
	
		notify(msg, true);
		exitFunction(arg);
	
	end function
	
	'// -----------------------------------------------------------------------------------------------------------------
	'// Description:
	'// 		Prevent this type to be instantiated.
	'// -----------------------------------------------------------------------------------------------------------------
	method new()
	
		local id:string = TTypeId.forObject(self).Name();
		runtimeError("Illegal to create an instance of a namespace class '" + id + "'.");
	
	end method

end type
